package com.example;

import java.util.LinkedList;
import java.util.List;

/**
 * @Author loubobooo
 * @Description #144. 二叉树的前序遍历
 * @Date 2022/3/2
 */
public class BinaryTreePreorderTraversal {

    class TreeNode {
        int val;
        TreeNode left;
        TreeNode right;

        TreeNode() {
        }

        TreeNode(int val) {
            this.val = val;
        }

        TreeNode(int val, TreeNode left, TreeNode right) {
            this.val = val;
            this.left = left;
            this.right = right;
        }
    }

    private List<Integer> list = new LinkedList<>();

    /**
     * 方法描述:给你二叉树的根节点 root ，返回它节点值的 前序 遍历。
     * 示例 1：
     * <p>
     * 输入：root = [1,null,2,3]
     * 输出：[1,2,3]
     *
     * @param: [root]
     * @return: java.util.List<java.lang.Integer>
     * @author: loubobooo
     * @date: 2022/3/2
     */
    public List<Integer> preorderTraversal(TreeNode root) {
        if (root == null) {
            return list;
        }
        list.add(root.val);
        preorderTraversal(root.left);
        preorderTraversal(root.right);
        return list;
    }

}
